/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.sourceclear.gramtest; import java.io.IOException; import java.io.Reader; import java.io.InputStreamReader; import java.nio.charset.Charset; import java.util.List; import org.antlr.v4.runtime.ANTLRInputStream; import org.antlr.v4.runtime.CommonTokenStream; import org.antlr.v4.runtime.Lexer; import org.antlr.v4.runtime.ParserRuleContext; import org.junit.*; /** * * @author asankhaya */ public class MainTest { public MainTest() { super(); } @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { } /** * Test with arithmetic expressions grammar * @throws java.io.IOException */ @Test public void testArithExpGram() throws IOException { Lexer lexer = new bnfLexer(new ANTLRInputStream(getClass().getResourceAsStream("/arithexp.bnf"))); CommonTokenStream tokens = new CommonTokenStream(lexer); bnfParser grammarparser = new bnfParser(tokens); ParserRuleContext tree = grammarparser.rulelist(); GeneratorVisitor extractor = new GeneratorVisitor(); extractor.visit(tree); List<String> generatedTests = extractor.getTests(); Assert.assertEquals(100, generatedTests.size()); } /** * Test with course codes grammar * @throws java.io.IOException */ @Test public void testCourseCodeGram() throws IOException { Lexer lexer = new bnfLexer(new ANTLRInputStream(getClass().getResourceAsStream("/coursecodes.bnf"))); CommonTokenStream tokens = new CommonTokenStream(lexer); bnfParser grammarparser = new bnfParser(tokens); ParserRuleContext tree = grammarparser.rulelist(); GeneratorVisitor extractor = new GeneratorVisitor(); extractor.visit(tree); List<String> generatedTests = extractor.getTests(); Assert.assertEquals(10, generatedTests.size()); } /** * Test with main grammar * @throws java.io.IOException */ @Test public void testMainStrGram() throws IOException { Lexer lexer = new bnfLexer(new ANTLRInputStream(getClass().getResourceAsStream("/main.bnf"))); CommonTokenStream tokens = new CommonTokenStream(lexer); bnfParser grammarparser = new bnfParser(tokens); ParserRuleContext tree = grammarparser.rulelist(); GeneratorVisitor extractor = new GeneratorVisitor(100,2,1,10,true); extractor.visit(tree); List<String> generatedTests = extractor.getTests(); Assert.assertEquals(100, generatedTests.size()); } /** * Test with JSON grammar * @throws java.io.IOException */ @Test public void testJSONGram() throws IOException { Lexer lexer = new bnfLexer(new ANTLRInputStream(getClass().getResourceAsStream("/json.bnf"))); CommonTokenStream tokens = new CommonTokenStream(lexer); bnfParser grammarparser = new bnfParser(tokens); ParserRuleContext tree = grammarparser.rulelist(); GeneratorVisitor extractor = new GeneratorVisitor(100,2,10,100,true); extractor.visit(tree); List<String> generatedTests = extractor.getTests(); Assert.assertEquals(100, generatedTests.size()); } /** * Test with Datalog grammar * @throws java.io.IOException */ @Test @Ignore("Ignoring long running test") public void testDatalogGram() throws IOException { Lexer lexer = new bnfLexer(new ANTLRInputStream(getClass().getResourceAsStream("/datalog.bnf"))); CommonTokenStream tokens = new CommonTokenStream(lexer); bnfParser grammarparser = new bnfParser(tokens); ParserRuleContext tree = grammarparser.rulelist(); GeneratorVisitor extractor = new GeneratorVisitor(100,2,8,16,true); extractor.visit(tree); List<String> generatedTests = extractor.getTests(); Assert.assertEquals(100, generatedTests.size()); } /** * Test with CSV grammar * @throws java.io.IOException */ @Test public void testCSVGram() throws IOException { Reader r = new InputStreamReader(getClass().getResourceAsStream("/csv.bnf"), "UTF-8"); Lexer lexer = new bnfLexer(new ANTLRInputStream(r)); CommonTokenStream tokens = new CommonTokenStream(lexer); bnfParser grammarparser = new bnfParser(tokens); ParserRuleContext tree = grammarparser.rulelist(); GeneratorVisitor extractor = new GeneratorVisitor(100,4,1,32,true); extractor.visit(tree); List<String> generatedTests = extractor.getTests(); Assert.assertEquals(10, generatedTests.size()); } /** * Test with url grammar * @throws java.io.IOException */ @Test @Ignore("Ignoring long running test") public void testURLGram() throws IOException { Lexer lexer = new bnfLexer(new ANTLRInputStream(getClass().getResourceAsStream("/url.bnf"))); CommonTokenStream tokens = new CommonTokenStream(lexer); bnfParser grammarparser = new bnfParser(tokens); ParserRuleContext tree = grammarparser.rulelist(); GeneratorVisitor extractor = new GeneratorVisitor(); extractor.visit(tree); List<String> generatedTests = extractor.getTests(); Assert.assertEquals(9, generatedTests.size()); } }